import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;

/**
 * Created by Administrator on 2017/11/1.
 */
public class Test {
    public static void main(String[] args) throws Exception{
       Person person=new Person();
        Class guo=person.getClass();//获得构造器
       Constructor[] constructors= guo.getConstructors();//获得构造器中的成员方法
        for (Constructor c:
            constructors ) {
            System.out.println(c);
        }
        System.out.println("__________________________");
//        Object[] objects=guo.getFields();//获得构造器中的成员变量（只能是公有的成员变量）
//        for(Object o:objects)
//        {
//            System.out.println(o);
//        }
//        System.out.println("------------------------------");
//        Object[] object=guo.getDeclaredFields();//获得构造器中的所有成员变量
//        for(Object t:object)
//        {
//            System.out.println(t);
//        }
//        System.out.println("------------------------------");
//        Field[] p=guo.getDeclaredFields();//获得构造器中的所有成员变量
//        for(Field u:p)
//        {
//            if(u.getName().equals("age"))
//            {
//                u.setAccessible(true);
//                u.set(p,21);
//            }
//            if("name".equals(u.getName()))
//            {
//                u.set(p,"guoxu");
//            }
//            System.out.println(p);
//        }
//        System.out.println("----------------");
//        Field pname=guo.getField("name");
//        pname.set(p,"guoxu");
        Method[] methods=guo.getMethods();
        for (Method m:
             methods) {
            System.out.println(m);
        }//获得成员方法
        System.out.println("----speak方法对象----");
        Method speak=guo.getMethod("speak",String.class,int.class);
        speak.invoke(person,"aaa",30);//要通过实例对象来获取
    }
}
